docs: put Agent Locks on the front page (fold into the next release) - #59
Merged
Conversation
v2.65.0 shipped Agent Locks and published a PyPI page that never says the words. I wrote the spec, the changelog and the code and skipped the front door, so the release whose headline feature is Agent Locks describes everything except Agent Locks. This cannot be patched in place -- PyPI bakes long_description into the artifact at build time -- so it rides along with the next release rather than burning a version on documentation. Adds: - a c3_locks row and the tool count 20 -> 21, verified against the real registry (21 `async def c3_*` in cli/mcp_server.py, 21 table rows) rather than incremented by hand. That count has drifted before. - c3_locks to the list of tools that are NOT read-only in plan mode. - an Agent Locks section after Guards, which is where it belongs: guards answer "may the agent touch this", locks answer "is someone already touching it". - the Access Guard built-in opt-out, including the part that matters -- two keys, so an agent that writes config.json still cannot grant itself write access to ~/.claude/settings.json. Keeps the coverage caveat the rest of the README uses: leases gate C3's own tool surfaces, and a raw c3_shell redirect, a non-Claude agent, or a human in an editor is not covered. Docs only. 1805 pass, ruff clean, all three doc links resolve. Claude-Session: https://claude.ai/code/session_01Sbd9NbQfDcoJvvURD7KCVf
drknowhow
marked this pull request as ready for review
July 31, 2026 20:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hold this until the next release, then merge it in. It is deliberately not its own release.
Why it exists
v2.65.0 shipped Agent Locks and published a PyPI page that never says the words. I wrote the spec, the changelog and the code, and skipped the front door — so the release whose headline feature is Agent Locks describes everything except Agent Locks.
Verified against the live API after publishing:
It can't be patched in place — PyPI bakes
long_descriptioninto the artifact at build time, so fixing the page needs a new version. Rather than burn 2.65.1 on documentation, this rides along with whatever ships next.What's in it
c3_locksrow, and the tool count 20 → 21 — verified against the real registry (21async def c3_*incli/mcp_server.py, 21 table rows), not incremented by hand. That count has drifted before: the README once claimed 18 against a real 20.c3_locksadded to the plan-mode exception list —acquire/releaseare writes.config.jsonstill can't grant itself write access to~/.claude/settings.json.It keeps the coverage caveat the rest of the README uses rather than overselling: leases gate C3's own tool surfaces, and a raw
c3_shellredirect, a non-Claude agent, or a human in an editor is not covered.Checks
Docs only — no code paths touched. 1805 pass, ruff clean, and all three doc links (
agent-locks.md,access-guard.md,mask-guard.md) resolve.Tracked as C3 task so it isn't forgotten between releases.
https://claude.ai/code/session_01Sbd9NbQfDcoJvvURD7KCVf